package com.shop.loan.model.entity;

import com.shop.loan.model.common.RequestBase;
import com.shop.loan.model.vo.GeoPoint;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
public class LoanOrderByMybatis extends RequestBase {
    /**
     * id
     */
    private Long id;

    /**
     * 前端是否显示
     */
    private Boolean appShow;

    /**
     * 银行卡id
     */
    private Long bankId;

    /**
     * 渠道是否显示
     */
    private Boolean channelStatistics;

    /**
     * 申请时间
     */
    private Date createTime;

    /**
     *
     */
    private Date deleteTime;

    /**
     * 优惠本息
     */
    private BigDecimal discountsMoney;

    /**
     * 优惠商品金额
     */
    private BigDecimal discountsMoneyByGoods;

    /**
     * 结束时间
     */
    private Date finishTime;

    /**
     *
     */
    private String fromClient;

    /**
     * 历史逾期
     */
    private Boolean hisOverdueStatus;

    /**
     *
     */
    private Boolean isDelete;

    /**
     * 放款时间
     */
    private Date loanTime;

    /**
     * 下单定位
     */
    private String locationAddress;

    /**
     * 借款金额
     */
    private BigDecimal money;

    /**
     * 下单ip
     */
    private String orderIp;

    /**
     * 第几单
     */
    private Integer orderNum;

    /**
     *
     */
    private String otherApplyNo;

    /**
     * 逾期天数
     */
    private Integer overdueDay;

    /**
     *
     */
    private BigDecimal overdueFine;

    /**
     * 当前逾期
     */
    private Boolean overdueStatus;

    /**
     * 逾期时间
     */
    private Date overdueTime;

    /**
     * 已还本息
     */
    private BigDecimal payMoney;

    /**
     * 已还商品金额
     */
    private BigDecimal payMoneyByGoods;

    /**
     * 期数
     */
    private Integer period;

    /**
     * 每期天数
     */
    private Integer periodDay;

    /**
     * 利息金额
     */
    private BigDecimal rateMoney;

    /**
     *
     */
    private Integer reasonType;

    /**
     * 担保费
     */
    private BigDecimal shopMoney;

    /**
     * 电子签状态
     */
    private Integer signStatus;

    /**
     * 订单状态
     */
    private Integer status;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 客户意愿
     */
    private Integer userWill;

    /**
     * 年利率(%)
     */
    private BigDecimal yearRate;

    /**
     *
     */
    private String orderLocation;

    /**
     * 售后客服
     */
    private Long afterServiceId;

    /**
     * 审核客服
     */
    private Long authServiceId;

    /**
     * 渠道
     */
    private Long channelId;

    /**
     * 催收客服
     */
    private Long collectionServiceId;

    /**
     * 商品
     */
    private Long goodsId;

    /**
     * 放款客服
     */
    private Long loanServiceId;

    private Long goodsSizeId;

    /**
     * 备注
     */
    private String remark;

    private Integer logisticsStatus;


    private Long productId;

    //订单分期账单
    private List<LoanOrderBillByMybatis> loanOrderBills;
    //签署记录
    private LoanOrderSignLogByMybatis loanOrderSignLogs;
    //当前登录的管理员Id
    private Long loginServiceUserId;
    //用户Id列表
    private List<Long> userIds;
    private List<Long> orderIds;
    //是否已支付
    private Integer payStatus;
    //池类型 1:放款池  2：今日/明日到期池
    private Integer poolType;

    private String bankInfo;

    private String user_name;
    private String user_mobile;
    private String card_num;
    private String channel_name;
    private String orderId;
    private String startTimeByCreate;
    private String endTimeByCreate;
    private String startTimeByLoan;
    private String endTimeByLoan;
    private String startTimeByOpPay;
    private String endTimeByOpPay;
    private String startTimeByPay;
    private String endTimeByPay;


    private String name;
    private String mobile;
    private String idCardNum;
    private BigDecimal totalMoney;
    private Boolean nowOverdue;
    private Boolean hisOverdue;
    private String payEndTime;


    //    1：全部  2：新客户  3：老客户
    private Integer userType;
    //审核是否通过
    private Integer authStatus;
    //是否部分还款
    private Integer isPart;
    private Integer hasDiscounts;
    private String sqlEx;
    private Integer distance;
    //经度
    private Double longitude;
    //纬度
    private Double latitude;

    private Integer period_end_1;

    private Boolean ordOverdueStatus;

    private Integer todayEnd;
    private Integer periodNum;

    private String createTimeStr;
    private String loanTimeStr;

    private GoodsByMybatis goods;
    private String goodsSizeInfo;
    private List<LoanOrderLogisticsByMybatis> logistics;


    public LoanOrderByMybatis(Long id, Boolean appShow, Long bankId, Boolean channelStatistics, Date createTime, Date deleteTime, BigDecimal discountsMoney, BigDecimal discountsMoneyByGoods, Date finishTime, String fromClient, Boolean hisOverdueStatus, Boolean isDelete, Date loanTime, String locationAddress, BigDecimal money, String orderIp, Integer orderNum, String otherApplyNo, Integer overdueDay, BigDecimal overdueFine, Boolean overdueStatus, Date overdueTime, BigDecimal payMoney, BigDecimal payMoneyByGoods, Integer period, Integer periodDay, BigDecimal rateMoney, Integer reasonType, BigDecimal shopMoney, Integer signStatus, Integer status, Long userId, Integer userWill, BigDecimal yearRate, String orderLocation, Long afterServiceId, Long authServiceId, Long channelId, Long collectionServiceId, Long goodsId, Long loanServiceId, Integer logisticsStatus, Long goodsSizeId) {
        this.id = id;
        this.appShow = appShow;
        this.bankId = bankId;
        this.channelStatistics = channelStatistics;
        this.createTime = createTime;
        this.deleteTime = deleteTime;
        this.discountsMoney = discountsMoney;
        this.discountsMoneyByGoods = discountsMoneyByGoods;
        this.finishTime = finishTime;
        this.fromClient = fromClient;
        this.hisOverdueStatus = hisOverdueStatus;
        this.isDelete = isDelete;
        this.loanTime = loanTime;
        this.locationAddress = locationAddress;
        this.money = money;
        this.orderIp = orderIp;
        this.orderNum = orderNum;
        this.otherApplyNo = otherApplyNo;
        this.overdueDay = overdueDay;
        this.overdueFine = overdueFine;
        this.overdueStatus = overdueStatus;
        this.overdueTime = overdueTime;
        this.payMoney = payMoney;
        this.payMoneyByGoods = payMoneyByGoods;
        this.period = period;
        this.periodDay = periodDay;
        this.rateMoney = rateMoney;
        this.reasonType = reasonType;
        this.shopMoney = shopMoney;
        this.signStatus = signStatus;
        this.status = status;
        this.userId = userId;
        this.userWill = userWill;
        this.yearRate = yearRate;
        this.orderLocation = orderLocation;
        this.afterServiceId = afterServiceId;
        this.authServiceId = authServiceId;
        this.channelId = channelId;
        this.collectionServiceId = collectionServiceId;
        this.goodsId = goodsId;
        this.loanServiceId = loanServiceId;
        this.logisticsStatus = logisticsStatus;
        this.goodsSizeId = goodsSizeId;
    }

    public LoanOrderByMybatis(Long id, Boolean appShow, Long bankId, Boolean channelStatistics, Date createTime, Date deleteTime, BigDecimal discountsMoney, BigDecimal discountsMoneyByGoods, Date finishTime, String fromClient, Boolean hisOverdueStatus, Boolean isDelete, Date loanTime, String locationAddress, BigDecimal money, String orderIp, Integer orderNum, String otherApplyNo, Integer overdueDay, BigDecimal overdueFine, Boolean overdueStatus, Date overdueTime, BigDecimal payMoney, BigDecimal payMoneyByGoods, Integer period, Integer periodDay, BigDecimal rateMoney, Integer reasonType, BigDecimal shopMoney, Integer signStatus, Integer status, Long userId, Integer userWill, BigDecimal yearRate, String orderLocation, Long afterServiceId, Long authServiceId, Long channelId, Long collectionServiceId, Long goodsId, Long loanServiceId, Integer logisticsStatus,Long goodsSizeId, String remark) {
        this.id = id;
        this.appShow = appShow;
        this.bankId = bankId;
        this.channelStatistics = channelStatistics;
        this.createTime = createTime;
        this.deleteTime = deleteTime;
        this.discountsMoney = discountsMoney;
        this.discountsMoneyByGoods = discountsMoneyByGoods;
        this.finishTime = finishTime;
        this.fromClient = fromClient;
        this.hisOverdueStatus = hisOverdueStatus;
        this.isDelete = isDelete;
        this.loanTime = loanTime;
        this.locationAddress = locationAddress;
        this.money = money;
        this.orderIp = orderIp;
        this.orderNum = orderNum;
        this.otherApplyNo = otherApplyNo;
        this.overdueDay = overdueDay;
        this.overdueFine = overdueFine;
        this.overdueStatus = overdueStatus;
        this.overdueTime = overdueTime;
        this.payMoney = payMoney;
        this.payMoneyByGoods = payMoneyByGoods;
        this.period = period;
        this.periodDay = periodDay;
        this.rateMoney = rateMoney;
        this.reasonType = reasonType;
        this.shopMoney = shopMoney;
        this.signStatus = signStatus;
        this.status = status;
        this.userId = userId;
        this.userWill = userWill;
        this.yearRate = yearRate;
        this.orderLocation = orderLocation;
        this.afterServiceId = afterServiceId;
        this.authServiceId = authServiceId;
        this.channelId = channelId;
        this.collectionServiceId = collectionServiceId;
        this.goodsId = goodsId;
        this.loanServiceId = loanServiceId;
        this.remark = remark;
        this.logisticsStatus = logisticsStatus;
        this.goodsSizeId = goodsSizeId;
    }

    public LoanOrderByMybatis() {
        super();
    }

    /**
     * 获取id
     *
     * @return id id
     */
    public Long getId() {
        return id;
    }

    /**
     * 设置id
     *
     * @param id id
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 获取前端是否显示
     *
     * @return app_show 前端是否显示
     */
    public Boolean getAppShow() {
        return appShow;
    }

    /**
     * 设置前端是否显示
     *
     * @param appShow 前端是否显示
     */
    public void setAppShow(Boolean appShow) {
        this.appShow = appShow;
    }

    /**
     * 获取银行卡id
     *
     * @return bank_id 银行卡id
     */
    public Long getBankId() {
        return bankId;
    }

    /**
     * 设置银行卡id
     *
     * @param bankId 银行卡id
     */
    public void setBankId(Long bankId) {
        this.bankId = bankId;
    }

    /**
     * 获取渠道是否显示
     *
     * @return channel_statistics 渠道是否显示
     */
    public Boolean getChannelStatistics() {
        return channelStatistics;
    }

    /**
     * 设置渠道是否显示
     *
     * @param channelStatistics 渠道是否显示
     */
    public void setChannelStatistics(Boolean channelStatistics) {
        this.channelStatistics = channelStatistics;
    }

    /**
     * 获取申请时间
     *
     * @return create_time 申请时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置申请时间
     *
     * @param createTime 申请时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取
     *
     * @return delete_time
     */
    public Date getDeleteTime() {
        return deleteTime;
    }

    /**
     * 设置
     *
     * @param deleteTime
     */
    public void setDeleteTime(Date deleteTime) {
        this.deleteTime = deleteTime;
    }

    /**
     * 获取优惠本息
     *
     * @return discounts_money 优惠本息
     */
    public BigDecimal getDiscountsMoney() {
        return discountsMoney;
    }

    /**
     * 设置优惠本息
     *
     * @param discountsMoney 优惠本息
     */
    public void setDiscountsMoney(BigDecimal discountsMoney) {
        this.discountsMoney = discountsMoney;
    }

    /**
     * 获取优惠商品金额
     *
     * @return discounts_money_by_goods 优惠商品金额
     */
    public BigDecimal getDiscountsMoneyByGoods() {
        return discountsMoneyByGoods;
    }

    /**
     * 设置优惠商品金额
     *
     * @param discountsMoneyByGoods 优惠商品金额
     */
    public void setDiscountsMoneyByGoods(BigDecimal discountsMoneyByGoods) {
        this.discountsMoneyByGoods = discountsMoneyByGoods;
    }

    /**
     * 获取结束时间
     *
     * @return finish_time 结束时间
     */
    public Date getFinishTime() {
        return finishTime;
    }

    /**
     * 设置结束时间
     *
     * @param finishTime 结束时间
     */
    public void setFinishTime(Date finishTime) {
        this.finishTime = finishTime;
    }

    /**
     * 获取
     *
     * @return from_client
     */
    public String getFromClient() {
        return fromClient;
    }

    /**
     * 设置
     *
     * @param fromClient
     */
    public void setFromClient(String fromClient) {
        this.fromClient = fromClient == null ? null : fromClient.trim();
    }

    /**
     * 获取历史逾期
     *
     * @return his_overdue_status 历史逾期
     */
    public Boolean getHisOverdueStatus() {
        return hisOverdueStatus;
    }

    /**
     * 设置历史逾期
     *
     * @param hisOverdueStatus 历史逾期
     */
    public void setHisOverdueStatus(Boolean hisOverdueStatus) {
        this.hisOverdueStatus = hisOverdueStatus;
    }

    /**
     * 获取
     *
     * @return is_delete
     */
    public Boolean getIsDelete() {
        return isDelete;
    }

    /**
     * 设置
     *
     * @param isDelete
     */
    public void setIsDelete(Boolean isDelete) {
        this.isDelete = isDelete;
    }

    /**
     * 获取放款时间
     *
     * @return loan_time 放款时间
     */
    public Date getLoanTime() {
        return loanTime;
    }

    /**
     * 设置放款时间
     *
     * @param loanTime 放款时间
     */
    public void setLoanTime(Date loanTime) {
        this.loanTime = loanTime;
    }

    /**
     * 获取下单定位
     *
     * @return location_address 下单定位
     */
    public String getLocationAddress() {
        return locationAddress;
    }

    /**
     * 设置下单定位
     *
     * @param locationAddress 下单定位
     */
    public void setLocationAddress(String locationAddress) {
        this.locationAddress = locationAddress == null ? null : locationAddress.trim();
    }

    /**
     * 获取借款金额
     *
     * @return money 借款金额
     */
    public BigDecimal getMoney() {
        return money;
    }

    /**
     * 设置借款金额
     *
     * @param money 借款金额
     */
    public void setMoney(BigDecimal money) {
        this.money = money;
    }

    /**
     * 获取下单ip
     *
     * @return order_ip 下单ip
     */
    public String getOrderIp() {
        return orderIp;
    }

    /**
     * 设置下单ip
     *
     * @param orderIp 下单ip
     */
    public void setOrderIp(String orderIp) {
        this.orderIp = orderIp == null ? null : orderIp.trim();
    }

    /**
     * 获取第几单
     *
     * @return order_num 第几单
     */
    public Integer getOrderNum() {
        return orderNum;
    }

    /**
     * 设置第几单
     *
     * @param orderNum 第几单
     */
    public void setOrderNum(Integer orderNum) {
        this.orderNum = orderNum;
    }

    /**
     * 获取
     *
     * @return other_apply_no
     */
    public String getOtherApplyNo() {
        return otherApplyNo;
    }

    /**
     * 设置
     *
     * @param otherApplyNo
     */
    public void setOtherApplyNo(String otherApplyNo) {
        this.otherApplyNo = otherApplyNo == null ? null : otherApplyNo.trim();
    }

    /**
     * 获取逾期天数
     *
     * @return overdue_day 逾期天数
     */
    public Integer getOverdueDay() {
        return overdueDay;
    }

    /**
     * 设置逾期天数
     *
     * @param overdueDay 逾期天数
     */
    public void setOverdueDay(Integer overdueDay) {
        this.overdueDay = overdueDay;
    }

    /**
     * 获取
     *
     * @return overdue_fine
     */
    public BigDecimal getOverdueFine() {
        return overdueFine;
    }

    /**
     * 设置
     *
     * @param overdueFine
     */
    public void setOverdueFine(BigDecimal overdueFine) {
        this.overdueFine = overdueFine;
    }

    /**
     * 获取当前逾期
     *
     * @return overdue_status 当前逾期
     */
    public Boolean getOverdueStatus() {
        return overdueStatus;
    }

    /**
     * 设置当前逾期
     *
     * @param overdueStatus 当前逾期
     */
    public void setOverdueStatus(Boolean overdueStatus) {
        this.overdueStatus = overdueStatus;
    }

    /**
     * 获取逾期时间
     *
     * @return overdue_time 逾期时间
     */
    public Date getOverdueTime() {
        return overdueTime;
    }

    /**
     * 设置逾期时间
     *
     * @param overdueTime 逾期时间
     */
    public void setOverdueTime(Date overdueTime) {
        this.overdueTime = overdueTime;
    }

    /**
     * 获取已还本息
     *
     * @return pay_money 已还本息
     */
    public BigDecimal getPayMoney() {
        return payMoney;
    }

    /**
     * 设置已还本息
     *
     * @param payMoney 已还本息
     */
    public void setPayMoney(BigDecimal payMoney) {
        this.payMoney = payMoney;
    }

    /**
     * 获取已还商品金额
     *
     * @return pay_money_by_goods 已还商品金额
     */
    public BigDecimal getPayMoneyByGoods() {
        return payMoneyByGoods;
    }

    /**
     * 设置已还商品金额
     *
     * @param payMoneyByGoods 已还商品金额
     */
    public void setPayMoneyByGoods(BigDecimal payMoneyByGoods) {
        this.payMoneyByGoods = payMoneyByGoods;
    }

    /**
     * 获取期数
     *
     * @return period 期数
     */
    public Integer getPeriod() {
        return period;
    }

    /**
     * 设置期数
     *
     * @param period 期数
     */
    public void setPeriod(Integer period) {
        this.period = period;
    }

    /**
     * 获取每期天数
     *
     * @return period_day 每期天数
     */
    public Integer getPeriodDay() {
        return periodDay;
    }

    /**
     * 设置每期天数
     *
     * @param periodDay 每期天数
     */
    public void setPeriodDay(Integer periodDay) {
        this.periodDay = periodDay;
    }

    /**
     * 获取利息金额
     *
     * @return rate_money 利息金额
     */
    public BigDecimal getRateMoney() {
        return rateMoney;
    }

    /**
     * 设置利息金额
     *
     * @param rateMoney 利息金额
     */
    public void setRateMoney(BigDecimal rateMoney) {
        this.rateMoney = rateMoney;
    }

    /**
     * 获取
     *
     * @return reason_type
     */
    public Integer getReasonType() {
        return reasonType;
    }

    /**
     * 设置
     *
     * @param reasonType
     */
    public void setReasonType(Integer reasonType) {
        this.reasonType = reasonType;
    }

    /**
     * 获取担保费
     *
     * @return shop_money 担保费
     */
    public BigDecimal getShopMoney() {
        return shopMoney;
    }

    /**
     * 设置担保费
     *
     * @param shopMoney 担保费
     */
    public void setShopMoney(BigDecimal shopMoney) {
        this.shopMoney = shopMoney;
    }

    /**
     * 获取电子签状态
     *
     * @return sign_status 电子签状态
     */
    public Integer getSignStatus() {
        return signStatus;
    }

    /**
     * 设置电子签状态
     *
     * @param signStatus 电子签状态
     */
    public void setSignStatus(Integer signStatus) {
        this.signStatus = signStatus;
    }

    /**
     * 获取订单状态
     *
     * @return status 订单状态
     */
    public Integer getStatus() {
        return status;
    }

    /**
     * 设置订单状态
     *
     * @param status 订单状态
     */
    public void setStatus(Integer status) {
        this.status = status;
    }

    /**
     * 获取用户id
     *
     * @return user_id 用户id
     */
    public Long getUserId() {
        return userId;
    }

    /**
     * 设置用户id
     *
     * @param userId 用户id
     */
    public void setUserId(Long userId) {
        this.userId = userId;
    }

    /**
     * 获取客户意愿
     *
     * @return user_will 客户意愿
     */
    public Integer getUserWill() {
        return userWill;
    }

    /**
     * 设置客户意愿
     *
     * @param userWill 客户意愿
     */
    public void setUserWill(Integer userWill) {
        this.userWill = userWill;
    }

    /**
     * 获取年利率(%)
     *
     * @return year_rate 年利率(%)
     */
    public BigDecimal getYearRate() {
        return yearRate;
    }

    /**
     * 设置年利率(%)
     *
     * @param yearRate 年利率(%)
     */
    public void setYearRate(BigDecimal yearRate) {
        this.yearRate = yearRate;
    }

    /**
     * 获取售后客服
     *
     * @return after_service_id 售后客服
     */
    public Long getAfterServiceId() {
        return afterServiceId;
    }

    /**
     * 设置售后客服
     *
     * @param afterServiceId 售后客服
     */
    public void setAfterServiceId(Long afterServiceId) {
        this.afterServiceId = afterServiceId;
    }

    /**
     * 获取审核客服
     *
     * @return auth_service_id 审核客服
     */
    public Long getAuthServiceId() {
        return authServiceId;
    }

    /**
     * 设置审核客服
     *
     * @param authServiceId 审核客服
     */
    public void setAuthServiceId(Long authServiceId) {
        this.authServiceId = authServiceId;
    }

    /**
     * 获取渠道
     *
     * @return channel_id 渠道
     */
    public Long getChannelId() {
        return channelId;
    }

    /**
     * 设置渠道
     *
     * @param channelId 渠道
     */
    public void setChannelId(Long channelId) {
        this.channelId = channelId;
    }

    /**
     * 获取催收客服
     *
     * @return collection_service_id 催收客服
     */
    public Long getCollectionServiceId() {
        return collectionServiceId;
    }

    /**
     * 设置催收客服
     *
     * @param collectionServiceId 催收客服
     */
    public void setCollectionServiceId(Long collectionServiceId) {
        this.collectionServiceId = collectionServiceId;
    }

    /**
     * 获取商品
     *
     * @return goods_id 商品
     */
    public Long getGoodsId() {
        return goodsId;
    }

    /**
     * 设置商品
     *
     * @param goodsId 商品
     */
    public void setGoodsId(Long goodsId) {
        this.goodsId = goodsId;
    }

    /**
     * 获取放款客服
     *
     * @return loan_service_id 放款客服
     */
    public Long getLoanServiceId() {
        return loanServiceId;
    }

    /**
     * 设置放款客服
     *
     * @param loanServiceId 放款客服
     */
    public void setLoanServiceId(Long loanServiceId) {
        this.loanServiceId = loanServiceId;
    }

    /**
     * 获取备注
     *
     * @return remark 备注
     */
    public String getRemark() {
        return remark;
    }

    /**
     * 设置备注
     *
     * @param remark 备注
     */
    public void setRemark(String remark) {
        this.remark = remark == null ? null : remark.trim();
    }
}